Skip to content

fix: Genie plugin — handle in-progress messages on reload and fix message overflow#196

Open
calvarjorge wants to merge 2 commits intomainfrom
jorge.calvar/genie_improvements
Open

fix: Genie plugin — handle in-progress messages on reload and fix message overflow#196
calvarjorge wants to merge 2 commits intomainfrom
jorge.calvar/genie_improvements

Conversation

@calvarjorge
Copy link
Contributor

@calvarjorge calvarjorge commented Mar 18, 2026

Summary

  • Bug fix: in-progress messages on page reload — When reloading a page while a Genie message is still loading, the history endpoint returned the in-progress message which the frontend silently dropped (no attachments yet), leaving the UI broken with no way to recover. Added a new single-message polling endpoint (GET /:alias/conversations/:conversationId/messages/:messageId) that SSE-streams status updates until the message completes. The frontend now detects pending messages after history load and polls via this endpoint, reusing the existing processStreamEvent pipeline.

  • Bug fix: message bubbles overflowing the chat viewport — Response bubbles extended past the visible area.

When reloading a page while a Genie message is still loading, the
history endpoint returned the in-progress message which the frontend
silently dropped (no attachments yet). This left the UI broken with
no way to recover.

Add a single-message polling endpoint (GET /:alias/conversations/
:conversationId/messages/:messageId) that SSE-streams status updates
until the message completes. The frontend now detects pending messages
after history load and polls via this endpoint, reusing the existing
processStreamEvent pipeline.

Also fix wide query results overflowing beyond the message bubble by
switching to overflow-x-auto and adding min-w-0 constraints.

Signed-off-by: Jorge Calvar <jorge.calvar@databricks.com>
Message bubbles extended past the visible area for two reasons:

1. The content column used items-start/items-end for alignment, which
   caused Cards to size based on their content width instead of
   stretching to the column. Wide content (tables, long text) pushed
   Cards wider than the 80% column, with overflow clipped visually
   but text wrapping at the wider intrinsic width.

2. Radix ScrollArea inserts a wrapper div with display:table that
   grows to fit content. This made the entire scroll container wider
   than the viewport, so percentage-based widths resolved against
   the wider container.

Fix:
- Remove items-start/items-end from the content column
- Add w-full to all Cards so they always match the column width
- Override Radix's table wrapper to display:block via targeted
  selector on the scroll area viewport
- Add break-words to markdown content and make markdown tables
  scrollable within the bubble

Signed-off-by: Jorge Calvar <jorge.calvar@databricks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant